package com.zp.business.entity.patVisit;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zp.common.core.entity.BaseEntity;
import com.zp.common.satoken.utils.LoginHelper;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 患者住院信息对象 pat_visit
 *
 * @author zhang peng
 * @ date 2024-06-24
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("pat_visit")
public class PatVisit extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(value = "visit_id")
    private String visitId;

    /**
     * 病人ID
     */
    private String patientId;

    /**
     * 门诊ID
     */
    private String clinicId;

    /**
     * 住院号
     */
    private String hospitalNo;

    /**
     * 住院次数
     */
    private Integer hospitalizationNumber;

    /**
     * 发病时间
     */
    private Date situationTime;

    /**
     * 病情状态
     */
    private String situationType;

    /**
     * 入院情况
     */
    private String hospitalSituation;

    /**
     * 隔离情况
     */
    private String quarantine;

    /**
     * 入院诊断
     */
    private String diagnosis;

    /**
     * 入院诊断编码
     */
    private String diagnosisCode;

    /**
     * 入院科室
     */
    private String deptAdmissionTo;

    /**
     * 入院病区
     */
    private String wardAdmissionTo;

    /**
     * 入院日期及时间
     */
    private Date admissionTime;

    /**
     * 入院途径
     */
    private String channel;

    /**
     * 入院来源
     */
    private String source;

    /**
     * 确诊医生
     */
    private String confirmDoctor;

    /**
     * 出院病区
     */
    private String wardDischargeTo;

    /**
     * 出院科室
     */
    private String deptDischargeTo;

    /**
     * 出院时间
     */
    private Date dischargeTime;

    /**
     * 在院出院状态Y在院、N出院
     */
    private String inFlag;

    /**
     * 在科标识Y在科室、N不在科室
     */
    private String deptFlag;

    /**
     * 在病区标识Y在病区、N不在病区
     */
    private String wardFlag;

    /**
     * 所在科室
     */
    private String deptStayed;

    /**
     * 所在病区
     */
    private String wardCode;

    /**
     * 首次入科时间
     */
    private Date firstEnterDeptTime;

    /**
     * 入科日期及时间
     */
    private Date enterDeptTime;

    /**
     * 首次入病区时间
     */
    private Date firstEnterWardTime;

    /**
     * 入病区日期及时间
     */
    private Date enterWardTime;

    /**
     * 质控护士
     */
    private String qualityNurse;

    /**
     * 责任护士
     */
    private String dutyNurse;

    /**
     * 管床医师
     */
    private String doctorInCharge;

    /**
     * 上级医生
     */
    private String upperDoctor;

    /**
     * 主任医生
     */
    private String directorDoctor;

    /**
     * 护理等级
     */
    private String nursingClass;

    /**
     * 首次入床房间号
     */
    private String firstRoomNo;

    /**
     * 首次床号
     */
    private Integer firstBedNo;

    /**
     * 首次床标号
     */
    private String firstBedLabel;

    /**
     * 患者当前房间号
     */
    private String roomNo;

    /**
     * 患者当前床标号
     */
    private String bedLabel;

    /**
     * 床号
     */
    private String bedNo;

    /**
     * 预交金余额
     */
    private BigDecimal prepayments;

    /**
     * 预交金限额
     */
    private BigDecimal paymentInAdvance;

    /**
     * 余欠款  余欠款等于预交款减去自费金额
     */
    private BigDecimal paymentLast;

    /**
     * 总费用
     */
    private BigDecimal totalCosts;

    /**
     * 实际应付费用
     */
    private BigDecimal totalCharges;

    /**
     * 出院方式
     */
    private String settledType;

    /**
     * 出院结算标记
     */
    private String settledIndicator;

    /**
     * 中途结算日期
     */
    private Date halfwayDate;

    /**
     * 机构ID
     */
    private String orgId;

    /**
     * 删除标志
     */
    @TableLogic
    private String delFlag;
    /**
     * 备注
     */
    private String remarks;
    /**
     * 是否新生儿一块出院，Y：是 N：否
     */
    private String leaveWithoutNewborn;
    /**
     * 是否新生儿一起结算，Y：是 N：否
     */
    private String isNewBornOutpHos;
    /**
     * 转科科别
     */
    private String chanceDept;
    /**
     * 质控时间
     */
    private Date qualityTime;
    /**
     * 病案质量
     */
    private String medicalQuality;
    /**
     * 离院方式
     */
    private String liveHosType;
    /**
     * 质控医师
     */
    private String qualityDoctor;
    /**
     * 最后一次划价时间
     */
    private Date lastAcctTime;
    /**
     * 结算标识
     */
    private String feesNo;
    /**
     * 熔断后异常信息
     */
    @TableField(exist = false)
    private String exceptionCode;

    public void initEntity() {
        this.delFlag = "0";
    }

    /**
     * 修改人、修改时间信息信息
     */
    public void updateInfo() {
        setUpdateBy(LoginHelper.getLoginUser().getNickName());
        setUpdateTime(new Date());
    }

}
